
#include "rtthread.h"
#include "usart.h"
/*
定义console 的输入输出函数，此处定义到串口1
*/
#define UartHandle huart1
/*
定义了输出函数就可以使用rt_Kprintf 函数进行打印输出了
*/
void rt_hw_console_output(const char *str)
{
    rt_size_t i = 0, size = 0;
    char a = '\r';

    __HAL_UNLOCK(&UartHandle);

    size = rt_strlen(str);
    for (i = 0; i < size; i++)
    {
        if (*(str + i) == '\n')
        {
            HAL_UART_Transmit(&UartHandle, (uint8_t *)&a, 1, 1);
        }
        HAL_UART_Transmit(&UartHandle, (uint8_t *)(str + i), 1, 1);
    }
}
/*
此处getchar采用查询的方式，如果基础串口中断打开了需要关闭
*/
char rt_hw_console_getchar(void)
{
    int ch = -1;

    if (__HAL_UART_GET_FLAG(&UartHandle, UART_FLAG_RXNE) != RESET)
    {
        ch = (int)UartHandle.Instance->DR & 0xff;
        __HAL_UART_CLEAR_OREFLAG(&UartHandle);
    }
    else
    {
        if (__HAL_UART_GET_FLAG(&UartHandle, UART_FLAG_ORE) != RESET)
        {
            __HAL_UART_CLEAR_OREFLAG(&UartHandle);
        }
        rt_thread_mdelay(10);
    }
    return ch;
}
